import { getCooki, setCooki, delCooki } from './cooki_tools'
import { userDate, routeTages } from '../interfaces'

const TokenKey = `cxzq_${import.meta.env.VUE_APP_NAME}_token_v2`
const OATokenKey = 'LtpaToken'
const userDataKey = `cxzq_${import.meta.env.VUE_APP_NAME}_user_v2`
const TagsKey = `cxzq_${import.meta.env.VUE_APP_NAME}_tags_v2`

/**
 * [设置用户信息]
 * @param {userDate} [userDate]
 * @return  string  [返回在cookie中的token]
 */
export function setUserData<T extends userDate>(user: T) {
  setCooki(userDataKey, JSON.stringify(user))
}

/**
 * [获取token]
 * @prams null [不需要参数]
 * @return  string  [返回在cookie中的token]
 */
export function getToken() {
  return getCooki(TokenKey)
}

/**
 * [获取OAtoken]
 * @prams null [不需要参数]
 * @return  string  [返回在cookie中的OAtoken]
 */
export function getOAToken() {
  return getCooki(OATokenKey)
}

/**
 * [设置token]
 * @param {userDate} [userDate]
 * @return  string  [返回在cookie中的token]
 */
export function setToken(token: string) {
  return setCooki(TokenKey, token)
}

/**
 * [移除token]
 * @prams null [不需要参数]
 * @return  null|error  [成功返回null 失败返回错误信息]
 */
export function removeToken() {
  return delCooki(TokenKey)
}

/**
 * [移除用户信息]
 * @prams null [不需要参数]
 * @return  null|error  [成功返回null 失败返回错误信息]
 */
export function removeUserData() {
  return delCooki(userDataKey)
}

/**
 * [设置路由标签]
 * @param {userDate} [userDate]
 * @return  null|error  [成功返回null 失败返回错误信息]
 */
export function setTags<T extends routeTages>(tags: T) {
  return setCooki(TagsKey, JSON.stringify(tags))
}

/**
 * [移除路由标签]
 * @prams null [不需要参数]
 * @return  null|error  [成功返回null 失败返回错误信息]
 */
export function removeTags() {
  return delCooki(TagsKey)
}

/**
 * [获取路由标签]
 * @prams null [不需要参数]
 * @return  string  [返回在cookie中的路由标签]
 */
export function getTags() {
  let res = [] as routeTages
  try {
    res = JSON.parse(getCooki(TagsKey))
  } catch (error) {
    removeTags()
  }
  return res
}
